' Generado por Luis Molina.
' para la serializacion
Imports System.Xml.Serialization
Imports System.IO

' el xmlSerializer necesita saber los tipos tabla y campos
<XmlInclude(GetType(tabla)), XmlInclude(GetType(campos)), Serializable()> _
Public Class proyectos

#Region "Variables del proyecto"

    Private s_idProyectos As New Integer

    Private s_nombre As New String("")

    ' directorio donde esta el proyecto de visual basic por ejemplo
    Private s_directorioAplicacion As New String("")

    ' directorio fisico donde esta la bd
    ' si la bd es sql server este es el nombre de la bd
    Private s_directorio As New String("")

    ' archivo fisico donde se guardan los datos del proyecto
    Private s_archivo As New String("")

    Private s_nombredns As New String("")

    Private s_usuario As New String("")

    Private s_clave As New String("")


    ' arrayList de tablas
    Private s_tablas As New ArrayList

    ' arrayList de relaciones foraneas
    Private s_RelacionesForaneas As New ArrayList

    Private s_tiposBd As tiposBd
#End Region



    Public Sub New()

    End Sub

#Region "Propiedades principales de la bd"
    Public Property nombre() As String
        Get
            Return s_nombre
        End Get
        Set(ByVal Value As String)
            s_nombre = Value
        End Set
    End Property


    Public Property tipoBd() As Integer
        Get
            Return s_tiposBd
        End Get
        Set(ByVal Value As Integer)
            s_tiposBd = Value
        End Set
    End Property

    Public Property DirectorioAplicacion() As String
        Get
            Return s_directorioAplicacion
        End Get
        Set(ByVal Value As String)
            s_directorioAplicacion = Value
        End Set
    End Property

    Public Property Directorio() As String
        Get
            Return s_directorio
        End Get
        Set(ByVal Value As String)
            s_directorio = Value
        End Set
    End Property

    Public Property Archivo() As String
        Get
            Return s_archivo
        End Get
        Set(ByVal Value As String)
            s_archivo = Value
        End Set
    End Property

    Public Property NombreDns() As String
        Get
            Return s_nombredns
        End Get
        Set(ByVal Value As String)
            s_nombredns = Value
        End Set
    End Property

    Public Property Usuario() As String
        Get
            Return s_usuario
        End Get
        Set(ByVal Value As String)
            s_usuario = Value
        End Set
    End Property

    Public Property Clave() As String
        Get
            Return s_clave
        End Get
        Set(ByVal Value As String)
            s_clave = Value
        End Set
    End Property

#End Region

#Region "Propiedades extra"
    ' devuelve el numero de tablas
    Public ReadOnly Property numTablas() As Integer
        Get
            Return s_tablas.Count
        End Get
    End Property

    Public Property Tablas() As ArrayList
        Get
            Return s_tablas
        End Get
        Set(ByVal Value As ArrayList)
            s_tablas = Value
        End Set
    End Property



    Public ReadOnly Property numRelacionesForaneas() As Integer
        Get
            Return s_RelacionesForaneas.Count
        End Get
    End Property

    Public Property RelacionesForaneas() As ArrayList
        Get
            Return s_RelacionesForaneas
        End Get
        Set(ByVal Value As ArrayList)
            s_RelacionesForaneas = Value
        End Set
    End Property


    'Public Property idProyectos() As Integer
    '    Get
    '        Return s_idProyectos
    '    End Get
    '    Set(ByVal Value As Integer)
    '        s_idProyectos = Value
    '    End Set
    'End Property


#End Region


    Public Sub grabarProyecto(ByVal nombreArchivo As String)
        Try

            Dim olf As New System.Web.UI.LosFormatter
            Dim sw As New System.IO.FileStream("./proyectos/" + nombreArchivo + ".proy", FileMode.OpenOrCreate)
            olf.Serialize(sw, Me)
            sw.Close()
        Catch ex As Exception

        End Try
    End Sub

    Public Function cargarProyecto(ByVal nombreArchivo As String) As proyectos
        Try
            Dim pro As New proyectos
            Dim olf As New System.Web.UI.LosFormatter
            Dim sw As New System.IO.FileStream("./pro.txt", FileMode.OpenOrCreate)
            pro = olf.Deserialize(sw)
            sw.Close()
            Return pro

        Catch ex As Exception

        End Try
    End Function

End Class

